// source --> http://mietauto-robert.ch/wp-content/plugins/gravityforms/js/gravityforms.js?ver=2.3.4.3 // "prop" method fix for previous versions of jQuery (1.5 and below) if( typeof jQuery.fn.prop === 'undefined' ) { jQuery.fn.prop = jQuery.fn.attr; } jQuery(document).ready(function(){ //Formatting free form currency fields to currency jQuery(document).bind('gform_post_render', gformBindFormatPricingFields); }); function gformBindFormatPricingFields(){ jQuery(".ginput_amount, .ginput_donation_amount").bind("change", function(){ gformFormatPricingField(this); }); jQuery(".ginput_amount, .ginput_donation_amount").each(function(){ gformFormatPricingField(this); }); } //------------------------------------------------ //---------- CURRENCY ---------------------------- //------------------------------------------------ function Currency(currency){ this.currency = currency; this.toNumber = function(text){ if(this.isNumeric(text)) { return parseFloat(text); } return gformCleanNumber(text, this.currency["symbol_right"], this.currency["symbol_left"], this.currency["decimal_separator"]); }; /** * Attempts to clean the specified number and formats it as currency. * * @since 2.1.1.16 Allow the overriding of numerical checks. * * @param number int Number to be formatted. It can be a clean number, or an already formatted number. * @param isNumeric bool Whether or not the number is guaranteed to be a clean, unformatted number. * When false the function will attempt to clean the number. Defaults to false. * * @return string A number formatted as currency. */ this.toMoney = function(number, isNumeric){ isNumeric = isNumeric || false; //isNumeric is an optional parameter. Defaults to false if( ! isNumeric ) { //Cleaning number, removing all formatting number = gformCleanNumber(number, this.currency["symbol_right"], this.currency["symbol_left"], this.currency["decimal_separator"]); } if(number === false) { return ""; } number = number + ""; negative = ""; if(number[0] == "-"){ number = parseFloat(number.substr(1)); negative = '-'; } money = this.numberFormat(number, this.currency["decimals"], this.currency["decimal_separator"], this.currency["thousand_separator"]); if ( money == '0.00' ){ negative = ''; } var symbol_left = this.currency["symbol_left"] ? this.currency["symbol_left"] + this.currency["symbol_padding"] : ""; var symbol_right = this.currency["symbol_right"] ? this.currency["symbol_padding"] + this.currency["symbol_right"] : ""; money = negative + this.htmlDecode(symbol_left) + money + this.htmlDecode(symbol_right); return money; }; /** * Formats a number given the specified parameters. * * @since Unknown * * @param number int Number to be formatted. Must be a clean, unformatted format. * @param decimals int Number of decimals that the output should contain. * @param dec_point string Character to use as the decimal separator. Defaults to ".". * @param thousands_sep string Character to use as the thousand separator. Defaults to ",". * @param padded bool Pads output with zeroes if the number is exact. For example, 1.200. * * @return string The formatted number. */ this.numberFormat = function(number, decimals, dec_point, thousands_sep, padded){ var padded = typeof padded == 'undefined'; number = (number+'').replace(',', '').replace(' ', ''); var n = !isFinite(+number) ? 0 : +number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, dec = (typeof dec_point === 'undefined') ? '.' : dec_point, s = '', toFixedFix = function (n, prec) { var k = Math.pow(10, prec); return '' + Math.round(n * k) / k; }; if(decimals == '0') { n = n + 0.0000000001; // getting around floating point arithmetic issue when rounding. ( i.e. 4.005 is represented as 4.004999999999 and gets rounded to 4.00 instead of 4.01 ) s = ('' + Math.round(n)).split('.'); } else if(decimals == -1) { s = ('' + n).split('.'); } else { n = n + 0.0000000001; // getting around floating point arithmetic issue when rounding. ( i.e. 4.005 is represented as 4.004999999999 and gets rounded to 4.00 instead of 4.01 ) // Fix for IE parseFloat(0.55).toFixed(0) = 0; s = toFixedFix(n, prec).split('.'); } if (s[0].length > 3) { s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); } if(padded) { if ((s[1] || '').length < prec) { s[1] = s[1] || ''; s[1] += new Array(prec - s[1].length + 1).join('0'); } } return s.join(dec); } this.isNumeric = function(number){ return gformIsNumber(number); }; this.htmlDecode = function(text) { var c,m,d = text; // look for numerical entities " var arr=d.match(/&#[0-9]{1,5};/g); // if no matches found in string then skip if(arr!=null){ for(var x=0;x= -32768 && c <= 65535){ // decode every single match within string d = d.replace(m, String.fromCharCode(c)); }else{ d = d.replace(m, ""); //invalid so replace with nada } } } return d; }; } /** * Gets a formatted number and returns a clean "decimal dot" number. * * Note: Input must be formatted according to the specified parameters (symbol_right, symbol_left, decimal_separator). * @example input -> $1.20, output -> 1.2 * * @since 2.1.1.16 Modified to support additional param in Currency.toMoney. * * @param text string The currency-formatted number. * @param symbol_right string The symbol used on the right. * @param symbol_left string The symbol used on the left. * @param decimal_separator string The decimal separator being used. * * @return float The unformatted numerical value. */ function gformCleanNumber(text, symbol_right, symbol_left, decimal_separator){ var clean_number = '', float_number = '', digit = '', is_negative = false; //converting to a string if a number as passed text = text + " "; //Removing symbol in unicode format (i.e. ᅜ) text = text.replace(/&.*?;/g, ""); //Removing symbol from text text = text.replace(symbol_right, ""); text = text.replace(symbol_left, ""); //Removing all non-numeric characters for(var i=0; i= 0 && parseInt(digit) <= 9) || digit == decimal_separator ) clean_number += digit; else if(digit == '-') is_negative = true; } //Removing thousand separators but keeping decimal point for(var i=0; i= '0' && digit <= '9') float_number += digit; else if(digit == decimal_separator){ float_number += "."; } } if(is_negative) float_number = "-" + float_number; return gformIsNumber(float_number) ? parseFloat(float_number) : false; } function gformGetDecimalSeparator(numberFormat){ var s; switch (numberFormat){ case 'currency' : var currency = new Currency(gf_global.gf_currency_config); s = currency.currency["decimal_separator"]; break; case 'decimal_comma' : s = ','; break; default : s = "." } return s; } function gformIsNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); } function gformIsNumeric(value, number_format){ switch(number_format){ case "decimal_dot" : var r = new RegExp("^(-?[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]+)?)$"); return r.test(value); break; case "decimal_comma" : var r = new RegExp("^(-?[0-9]{1,3}(?:\.?[0-9]{3})*(?:,[0-9]+)?)$"); return r.test(value); break; } return false; } //------------------------------------------------ //---------- MULTI-PAGE -------------------------- //------------------------------------------------ function gformDeleteUploadedFile(formId, fieldId, deleteButton){ var parent = jQuery("#field_" + formId + "_" + fieldId); var fileIndex = jQuery(deleteButton).parent().index(); parent.find(".ginput_preview").eq(fileIndex).remove(); //displaying single file upload field parent.find('input[type="file"],.validation_message,#extensions_message_' + formId + '_' + fieldId).removeClass("gform_hidden"); //displaying post image label parent.find(".ginput_post_image_file").show(); //clearing post image meta fields parent.find("input[type=\"text\"]").val(''); //removing file from uploaded meta var filesJson = jQuery('#gform_uploaded_files_' + formId).val(); if(filesJson){ var files = jQuery.secureEvalJSON(filesJson); if(files) { var inputName = "input_" + fieldId; var $multfile = parent.find("#gform_multifile_upload_" + formId + "_" + fieldId ); if( $multfile.length > 0 ) { files[inputName].splice(fileIndex, 1); var settings = $multfile.data('settings'); var max = settings.gf_vars.max_files; jQuery("#" + settings.gf_vars.message_id).html(''); if(files[inputName].length < max) gfMultiFileUploader.toggleDisabled(settings, false); } else { files[inputName] = null; } jQuery('#gform_uploaded_files_' + formId).val(jQuery.toJSON(files)); } } } //------------------------------------------------ //---------- PRICE ------------------------------- //------------------------------------------------ var _gformPriceFields = new Array(); var _anyProductSelected; function gformIsHidden(element){ return element.parents('.gfield').not(".gfield_hidden_product").css("display") == "none"; } function gformCalculateTotalPrice(formId){ if(!_gformPriceFields[formId]) return; var price = 0; _anyProductSelected = false; //Will be used by gformCalculateProductPrice(). for(var i=0; i<_gformPriceFields[formId].length; i++){ price += gformCalculateProductPrice(formId, _gformPriceFields[formId][i]); } //add shipping price if a product has been selected if(_anyProductSelected){ //shipping price var shipping = gformGetShippingPrice(formId) price += shipping; } //gform_product_total filter. Allows uers to perform custom price calculation if(window["gform_product_total"]) price = window["gform_product_total"](formId, price); price = gform.applyFilters('gform_product_total', price, formId); //updating total var totalElement = jQuery(".ginput_total_" + formId); if( totalElement.length > 0 ) { var currentTotal = totalElement.next().val(), formattedTotal = gformFormatMoney(price, true); if (currentTotal != price) { totalElement.next().val(price).change(); } if (formattedTotal != totalElement.first().text()) { totalElement.html(formattedTotal); } } } function gformGetShippingPrice(formId){ var shippingField = jQuery(".gfield_shipping_" + formId + " input[type=\"hidden\"], .gfield_shipping_" + formId + " select, .gfield_shipping_" + formId + " input:checked"); var shipping = 0; if(shippingField.length == 1 && !gformIsHidden(shippingField)){ if(shippingField.attr("type") && shippingField.attr("type").toLowerCase() == "hidden") shipping = shippingField.val(); else shipping = gformGetPrice(shippingField.val()); } return gformToNumber(shipping); } function gformGetFieldId(element){ var id = jQuery(element).attr("id"); var pieces = id.split("_"); if(pieces.length <=0) return 0; var fieldId = pieces[pieces.length-1]; return fieldId; } function gformCalculateProductPrice(form_id, productFieldId){ var suffix = '_' + form_id + '_' + productFieldId; //Drop down auto-calculating labels jQuery('.gfield_option' + suffix + ', .gfield_shipping_' + form_id).find('select').each(function(){ var dropdown_field = jQuery(this); var selected_price = gformGetPrice(dropdown_field.val()); var field_id = dropdown_field.attr('id').split('_')[2]; dropdown_field.children('option').each(function(){ var choice_element = jQuery(this); var label = gformGetOptionLabel(choice_element, choice_element.val(), selected_price, form_id, field_id); choice_element.html(label); }); dropdown_field.trigger('chosen:updated'); }); //Checkboxes labels with prices jQuery('.gfield_option' + suffix).find('.gfield_checkbox').find('input:checkbox').each(function(){ var checkbox_item = jQuery(this); var id = checkbox_item.attr('id'); var field_id = id.split('_')[2]; var label_id = id.replace('choice_', '#label_'); var label_element = jQuery(label_id); var label = gformGetOptionLabel(label_element, checkbox_item.val(), 0, form_id, field_id); label_element.html(label); }); //Radio button auto-calculating lables jQuery('.gfield_option' + suffix + ', .gfield_shipping_' + form_id).find('.gfield_radio').each(function(){ var selected_price = 0; var radio_field = jQuery(this); var id = radio_field.attr('id'); var fieldId = id.split('_')[2]; var selected_value = radio_field.find('input:radio:checked').val(); if(selected_value) selected_price = gformGetPrice(selected_value); radio_field.find('input:radio').each(function(){ var radio_item = jQuery(this); var label_id = radio_item.attr('id').replace('choice_', '#label_'); var label_element = jQuery(label_id); if ( label_element ) { var label = gformGetOptionLabel(label_element, radio_item.val(), selected_price, form_id, fieldId); label_element.html(label); } }); }); var price = gformGetBasePrice(form_id, productFieldId); var quantity = gformGetProductQuantity( form_id, productFieldId ); //calculating options if quantity is more than 0 (a product was selected). if( quantity > 0 ) { jQuery('.gfield_option' + suffix).find('input:checked, select').each(function(){ if(!gformIsHidden(jQuery(this))) price += gformGetPrice(jQuery(this).val()); }); //setting global variable if quantity is more than 0 (a product was selected). Will be used when calculating total _anyProductSelected = true; } price = price * quantity; price = Math.round(price * 100) / 100; return price; } function gformGetProductQuantity(formId, productFieldId) { //If product is not selected if (!gformIsProductSelected(formId, productFieldId)) { return 0; } var quantity, quantityInput = jQuery('#ginput_quantity_' + formId + '_' + productFieldId), numberFormat; if (gformIsHidden(quantityInput)) { return 0; } if (quantityInput.length > 0) { quantity = quantityInput.val(); } else { quantityInput = jQuery('.gfield_quantity_' + formId + '_' + productFieldId + ' :input'); quantity = 1; if (quantityInput.length > 0) { quantity = quantityInput.val(); var htmlId = quantityInput.attr('id'), fieldId = gf_get_input_id_by_html_id(htmlId); numberFormat = gf_get_field_number_format( fieldId, formId, 'value' ); } } if (!numberFormat) numberFormat = 'currency'; var decimalSeparator = gformGetDecimalSeparator(numberFormat); quantity = gformCleanNumber(quantity, '', '', decimalSeparator); if (!quantity) quantity = 0; return quantity; } function gformIsProductSelected( formId, productFieldId ) { var suffix = "_" + formId + "_" + productFieldId; var productField = jQuery("#ginput_base_price" + suffix + ", .gfield_donation" + suffix + " input[type=\"text\"], .gfield_product" + suffix + " .ginput_amount"); if( productField.val() && ! gformIsHidden(productField) ){ return true; } else { productField = jQuery(".gfield_product" + suffix + " select, .gfield_product" + suffix + " input:checked, .gfield_donation" + suffix + " select, .gfield_donation" + suffix + " input:checked"); if( productField.val() && ! gformIsHidden(productField) ){ return true; } } return false; } function gformGetBasePrice(formId, productFieldId){ var suffix = "_" + formId + "_" + productFieldId; var price = 0; var productField = jQuery("#ginput_base_price" + suffix+ ", .gfield_donation" + suffix + " input[type=\"text\"], .gfield_product" + suffix + " .ginput_amount"); if(productField.length > 0){ price = productField.val(); //If field is hidden by conditional logic, don't count it for the total if(gformIsHidden(productField)){ price = 0; } } else { productField = jQuery(".gfield_product" + suffix + " select, .gfield_product" + suffix + " input:checked, .gfield_donation" + suffix + " select, .gfield_donation" + suffix + " input:checked"); var val = productField.val(); if(val){ val = val.split("|"); price = val.length > 1 ? val[1] : 0; } //If field is hidden by conditional logic, don't count it for the total if(gformIsHidden(productField)) price = 0; } var c = new Currency(gf_global.gf_currency_config); price = c.toNumber(price); return price === false ? 0 : price; } function gformFormatMoney(text, isNumeric){ if(!gf_global.gf_currency_config) return text; var currency = new Currency(gf_global.gf_currency_config); return currency.toMoney(text, isNumeric); } function gformFormatPricingField(element){ if(gf_global.gf_currency_config){ var currency = new Currency(gf_global.gf_currency_config); var price = currency.toMoney(jQuery(element).val()); jQuery(element).val(price); } } function gformToNumber(text){ var currency = new Currency(gf_global.gf_currency_config); return currency.toNumber(text); } function gformGetPriceDifference(currentPrice, newPrice){ //getting price difference var diff = parseFloat(newPrice) - parseFloat(currentPrice); price = gformFormatMoney(diff, true); if(diff > 0) price = "+" + price; return price; } function gformGetOptionLabel(element, selected_value, current_price, form_id, field_id){ element = jQuery(element); var price = gformGetPrice(selected_value); var current_diff = element.attr('price'); var original_label = element.html().replace(//i, "").replace(current_diff, ""); var diff = gformGetPriceDifference(current_price, price); diff = gformToNumber(diff) == 0 ? "" : " " + diff; element.attr('price', diff); //don't add for drop down items (not supported) var price_label = element[0].tagName.toLowerCase() == "option" ? " " + diff : "" + diff + ""; var label = original_label + price_label; //calling hook to allow for custom option formatting if(window["gform_format_option_label"]) label = gform_format_option_label(label, original_label, price_label, current_price, price, form_id, field_id); return label; } function gformGetProductIds(parent_class, element){ var classes = jQuery(element).hasClass(parent_class) ? jQuery(element).attr("class").split(" ") : jQuery(element).parents("." + parent_class).attr("class").split(" "); for(var i=0; i 1 && currency.toNumber(val[1]) !== false) return currency.toNumber(val[1]); return 0; } function gformRegisterPriceField(item){ if(!_gformPriceFields[item.formId]) _gformPriceFields[item.formId] = new Array(); //ignore price fields that have already been registered for(var i=0; i<_gformPriceFields[item.formId].length; i++) if(_gformPriceFields[item.formId][i] == item.productFieldId) return; //registering new price field _gformPriceFields[item.formId].push(item.productFieldId); } function gformInitPriceFields(){ jQuery(".gfield_price").each(function(){ var productIds = gformGetProductIds("gfield_price", this); gformRegisterPriceField(productIds); jQuery( this ).on( 'change', 'input[type="text"], input[type="number"], select', function() { var productIds = gformGetProductIds("gfield_price", this); if(productIds.formId == 0) productIds = gformGetProductIds("gfield_shipping", this); jQuery(document).trigger('gform_price_change', [productIds, this]); gformCalculateTotalPrice(productIds.formId); }); jQuery( this ).on( 'click', 'input[type="radio"], input[type="checkbox"]', function() { var productIds = gformGetProductIds("gfield_price", this); if(productIds.formId == 0) productIds = gformGetProductIds("gfield_shipping", this); jQuery(document).trigger('gform_price_change', [productIds, this]); gformCalculateTotalPrice(productIds.formId); }); }); for(formId in _gformPriceFields){ //needed when implementing for in loops if(!_gformPriceFields.hasOwnProperty(formId)) continue; gformCalculateTotalPrice(formId); } } //------------------------------------------- //---------- PASSWORD ----------------------- //------------------------------------------- function gformShowPasswordStrength(fieldId){ var password = jQuery("#" + fieldId).val(); var confirm = jQuery("#" + fieldId + "_2").val(); var result = gformPasswordStrength(password, confirm); var text = window['gf_text']["password_" + result]; jQuery("#" + fieldId + "_strength").val(result); jQuery("#" + fieldId + "_strength_indicator").removeClass("blank mismatch short good bad strong").addClass(result).html(text); } // Password strength meter function gformPasswordStrength(password1, password2) { var shortPass = 1, badPass = 2, goodPass = 3, strongPass = 4, mismatch = 5, symbolSize = 0, natLog, score; if(password1.length <=0) return "blank"; // password 1 != password 2 if ( (password1 != password2) && password2.length > 0) return "mismatch"; //password < 4 if ( password1.length < 4 ) return "short"; if ( password1.match(/[0-9]/) ) symbolSize +=10; if ( password1.match(/[a-z]/) ) symbolSize +=26; if ( password1.match(/[A-Z]/) ) symbolSize +=26; if ( password1.match(/[^a-zA-Z0-9]/) ) symbolSize +=31; natLog = Math.log( Math.pow(symbolSize, password1.length) ); score = natLog / Math.LN2; if (score < 40 ) return "bad"; if (score < 56 ) return "good"; return "strong"; } //---------------------------- //------ CHECKBOX FIELD ------ //---------------------------- function gformToggleCheckboxes( toggleCheckbox ) { var $toggle = jQuery( toggleCheckbox ).parent(), $toggleLabel = $toggle.find( 'label' ); $checkboxes = $toggle.parent().find( 'li:not( .gchoice_select_all )' ); // Set checkboxes state. $checkboxes.each( function() { // Set checkbox checked state. jQuery( 'input[type="checkbox"]', this ).prop( 'checked', toggleCheckbox.checked ).trigger( 'change' ); // Execute onclick event. if ( typeof jQuery( 'input[type="checkbox"]', this )[0].onclick === 'function' ) { jQuery( 'input[type="checkbox"]', this )[0].onclick(); } } ); // Change toggle label. if ( toggleCheckbox.checked ) { $toggleLabel.html( $toggleLabel.data( 'label-deselect' ) ); } else { $toggleLabel.html( $toggleLabel.data( 'label-select' ) ); } } //---------------------------- //------ LIST FIELD ---------- //---------------------------- function gformAddListItem( addButton, max ) { var $addButton = jQuery( addButton ); if( $addButton.hasClass( 'gfield_icon_disabled' ) ) { return; } var $group = $addButton.parents( '.gfield_list_group' ), $clone = $group.clone(), $container = $group.parents( '.gfield_list_container' ), tabindex = $clone.find( ':input:last' ).attr( 'tabindex' ); // reset all inputs to empty state $clone .find( 'input, select, textarea' ).attr( 'tabindex', tabindex ) .not( ':checkbox, :radio' ).val( '' ); $clone.find( ':checkbox, :radio' ).prop( 'checked', false ); $clone = gform.applyFilters( 'gform_list_item_pre_add', $clone, $group ); $group.after( $clone ); gformToggleIcons( $container, max ); gformAdjustClasses( $container ); gform.doAction( 'gform_list_post_item_add', $clone, $container ); } function gformDeleteListItem( deleteButton, max ) { var $deleteButton = jQuery( deleteButton ), $group = $deleteButton.parents( '.gfield_list_group' ), $container = $group.parents( '.gfield_list_container' ); $group.remove(); gformToggleIcons( $container, max ); gformAdjustClasses( $container ); gform.doAction( 'gform_list_post_item_delete', $container ); } function gformAdjustClasses( $container ) { var $groups = $container.find( '.gfield_list_group' ); $groups.each( function( i ) { var $group = jQuery( this ), oddEvenClass = ( i + 1 ) % 2 == 0 ? 'gfield_list_row_even' : 'gfield_list_row_odd'; $group.removeClass( 'gfield_list_row_odd gfield_list_row_even' ).addClass( oddEvenClass ); } ); } function gformToggleIcons( $container, max ) { var groupCount = $container.find( '.gfield_list_group' ).length, $addButtons = $container.find( '.add_list_item' ); $container.find( '.delete_list_item' ).css( 'visibility', groupCount == 1 ? 'hidden' : 'visible' ); if ( max > 0 && groupCount >= max ) { // store original title in the add button $addButtons.data( 'title', $container.find( '.add_list_item' ).attr( 'title' ) ); $addButtons.addClass( 'gfield_icon_disabled' ).attr( 'title', '' ); } else if( max > 0 ) { $addButtons.removeClass( 'gfield_icon_disabled' ); if( $addButtons.data( 'title' ) ) { $addButtons.attr( 'title', $addButtons.data( 'title' ) ); } } } //----------------------------------- //------ CREDIT CARD FIELD ---------- //----------------------------------- function gformMatchCard(id) { var cardType = gformFindCardType(jQuery('#' + id).val()); var cardContainer = jQuery('#' + id).parents('.gfield').find('.gform_card_icon_container'); if(!cardType) { jQuery(cardContainer).find('.gform_card_icon').removeClass('gform_card_icon_selected gform_card_icon_inactive'); } else { jQuery(cardContainer).find('.gform_card_icon').removeClass('gform_card_icon_selected').addClass('gform_card_icon_inactive'); jQuery(cardContainer).find('.gform_card_icon_' + cardType).removeClass('gform_card_icon_inactive').addClass('gform_card_icon_selected'); } } function gformFindCardType(value) { if(value.length < 4) return false; var rules = window['gf_cc_rules']; var validCardTypes = new Array(); for(type in rules) { //needed when implementing for in loops if(!rules.hasOwnProperty(type)) continue; for(i in rules[type]) { if(!rules[type].hasOwnProperty(i)) continue; if(rules[type][i].indexOf(value.substring(0, rules[type][i].length)) === 0) { validCardTypes[validCardTypes.length] = type; break; } } } return validCardTypes.length == 1 ? validCardTypes[0].toLowerCase() : false; } function gformToggleCreditCard(){ if(jQuery("#gform_payment_method_creditcard").is(":checked")) jQuery(".gform_card_fields_container").slideDown(); else jQuery(".gform_card_fields_container").slideUp(); } //---------------------------------------- //------ CHOSEN DROP DOWN FIELD ---------- //---------------------------------------- function gformInitChosenFields(fieldList, noResultsText){ return jQuery(fieldList).each(function(){ var element = jQuery( this ); // RTL support if( jQuery( 'html' ).attr( 'dir' ) == 'rtl' ) { element.addClass( 'chosen-rtl chzn-rtl' ); } // only initialize once if( element.is(":visible") && element.siblings(".chosen-container").length == 0 ){ var options = gform.applyFilters( 'gform_chosen_options', { no_results_text: noResultsText }, element ); element.chosen( options ); } }); } //---------------------------------------- //--- CURRENCY FORMAT NUMBER FIELD ------- //---------------------------------------- function gformInitCurrencyFormatFields(fieldList){ jQuery(fieldList).each(function(){ var $this = jQuery(this); $this.val( gformFormatMoney( jQuery(this).val() ) ); }).change( function( event ) { jQuery(this).val( gformFormatMoney( jQuery(this).val() ) ); }); } //---------------------------------------- //------ CALCULATION FUNCTIONS ----------- //---------------------------------------- var GFCalc = function(formId, formulaFields){ this.formId = formId; this.formulaFields = formulaFields; this.patt = /{[^{]*?:(\d+(\.\d+)?)(:(.*?))?}/i; this.exprPatt = /^[0-9 -/*\(\)]+$/i; this.isCalculating = {}; this.init = function(formId, formulaFields) { var calc = this; jQuery(document).bind("gform_post_conditional_logic", function(){ calc.runCalcs( formId, formulaFields ); } ); for(var i=0; i 1 || input.prop('type') == 'checkbox' ) input = input.filter(':checked'); var isVisible = window['gf_check_field_rule'] ? gf_check_field_rule( formId, fieldId, true, '' ) == 'show' : true; if( input.length > 0 && isVisible ) { var val = input.val(); val = val.split( '|' ); if( val.length > 1 ) { value = val[1]; } else { value = input.val(); } } var numberFormat = gf_get_field_number_format( fieldId, formId ); if( ! numberFormat ) numberFormat = gf_get_field_number_format( formulaField.field_id, formId ); var decimalSeparator = gformGetDecimalSeparator(numberFormat); // allow users to modify value with their own function value = gform.applyFilters( 'gform_merge_tag_value_pre_calculation', value, matches[i], isVisible, formulaField, formId ); value = gformCleanNumber( value, '', '', decimalSeparator ); if( ! value ) value = 0; expr = expr.replace( matches[i][0], value ); } return expr; } this.init(formId, formulaFields); } function gformFormatNumber(number, rounding, decimalSeparator, thousandSeparator){ if(typeof decimalSeparator == "undefined"){ if(window['gf_global']){ var currency = new Currency(gf_global.gf_currency_config); decimalSeparator = currency.currency["decimal_separator"]; } else{ decimalSeparator = "."; } } if(typeof thousandSeparator == "undefined"){ if(window['gf_global']){ var currency = new Currency(gf_global.gf_currency_config); thousandSeparator = currency.currency["thousand_separator"]; } else{ thousandSeparator = ","; } } var currency = new Currency(); return currency.numberFormat(number, rounding, decimalSeparator, thousandSeparator, false) } function gformToNumber(text) { var currency = new Currency(gf_global.gf_currency_config); return currency.toNumber(text); } function getMatchGroups(expr, patt) { var matches = new Array(); while(patt.test(expr)) { var i = matches.length; matches[i] = patt.exec(expr) expr = expr.replace('' + matches[i][0], ''); } return matches; } function gf_get_field_number_format(fieldId, formId, context) { var fieldNumberFormats = rgars(window, 'gf_global/number_formats/{0}/{1}'.format(formId, fieldId)), format = false; if (fieldNumberFormats === '') { return format; } if (typeof context == 'undefined') { format = fieldNumberFormats.price !== false ? fieldNumberFormats.price : fieldNumberFormats.value; } else { format = fieldNumberFormats[context]; } return format; } //---------------------------------------- //------ JAVASCRIPT HOOK FUNCTIONS ------- //---------------------------------------- var gform = { hooks: { action: {}, filter: {} }, addAction: function( action, callable, priority, tag ) { gform.addHook( 'action', action, callable, priority, tag ); }, addFilter: function( action, callable, priority, tag ) { gform.addHook( 'filter', action, callable, priority, tag ); }, doAction: function( action ) { gform.doHook( 'action', action, arguments ); }, applyFilters: function( action ) { return gform.doHook( 'filter', action, arguments ); }, removeAction: function( action, tag ) { gform.removeHook( 'action', action, tag ); }, removeFilter: function( action, priority, tag ) { gform.removeHook( 'filter', action, priority, tag ); }, addHook: function( hookType, action, callable, priority, tag ) { if ( undefined == gform.hooks[hookType][action] ) { gform.hooks[hookType][action] = []; } var hooks = gform.hooks[hookType][action]; if ( undefined == tag ) { tag = action + '_' + hooks.length; } if( priority == undefined ){ priority = 10; } gform.hooks[hookType][action].push( { tag:tag, callable:callable, priority:priority } ); }, doHook: function( hookType, action, args ) { // splice args from object into array and remove first index which is the hook name args = Array.prototype.slice.call(args, 1); if ( undefined != gform.hooks[hookType][action] ) { var hooks = gform.hooks[hookType][action], hook; //sort by priority hooks.sort(function(a,b){return a["priority"]-b["priority"]}); for( var i=0; i=0; i--) { if ((undefined==tag||tag==hooks[i].tag) && (undefined==priority||priority==hooks[i].priority)){ hooks.splice(i,1); } } } } }; //---------------------------------------- //------ reCAPTCHA FUNCTIONS ------------- //---------------------------------------- /** * Callback function on the reCAPTCAH API script. * * @see GF_Field_CAPTCHA::get_field_input() in /includes/fields/class-gf-field-catpcha.php */ function renderRecaptcha() { jQuery( '.ginput_recaptcha' ).each( function() { var $elem = jQuery( this ), parameters = { 'sitekey': $elem.data( 'sitekey' ), 'theme': $elem.data( 'theme' ), 'tabindex': $elem.data( 'tabindex' ) }; if ( ! $elem.is( ':empty' ) ) { return; } if ( $elem.data( 'stoken' ) ) { parameters.stoken = $elem.data( 'stoken' ); } /** * Allows a custom callback function to be executed when the user successfully submits the captcha. * * @since 2.2.5.20 * * @param string|false callback The name of the callback function to be executed when the user successfully submits the captcha. * @param object $elem The jQuery object containing the div element with the ginput_recaptcha class for the current reCaptcha field. */ var callback = gform.applyFilters( 'gform_recaptcha_callback', false, $elem ); if ( callback ) { parameters.callback = callback; } grecaptcha.render( this.id, parameters ); if ( parameters.tabindex ) { $elem.find( 'iframe' ).attr( 'tabindex', parameters.tabindex ); } gform.doAction( 'gform_post_recaptcha_render', $elem ); } ); } //---------------------------------------- //----- SINGLE FILE UPLOAD FUNCTIONS ----- //---------------------------------------- function gformValidateFileSize( field, max_file_size ) { var validation_element; // Get validation message element. if ( jQuery( field ).closest( 'div' ).siblings( '.validation_message' ).length > 0 ) { validation_element = jQuery( field ).closest( 'div' ).siblings( '.validation_message' ); } else { validation_element = jQuery( field ).siblings( '.validation_message' ); } // If file API is not supported within browser, return. if ( ! window.FileReader || ! window.File || ! window.FileList || ! window.Blob ) { return; } // Get selected file. var file = field.files[0]; // If selected file is larger than maximum file size, set validation message and unset file selection. if ( file && file.size > max_file_size ) { // Set validation message. validation_element.text( file.name + " - " + gform_gravityforms.strings.file_exceeds_limit ); // Unset file selection. var input = jQuery( field ); input.replaceWith( input.val( '' ).clone( true ) ); } else { // Reset validation message. validation_element.text( '' ); } } //---------------------------------------- //------ MULTIFILE UPLOAD FUNCTIONS ------ //---------------------------------------- (function (gfMultiFileUploader, $) { gfMultiFileUploader.uploaders = {}; var strings = typeof gform_gravityforms != 'undefined' ? gform_gravityforms.strings : {}; var imagesUrl = typeof gform_gravityforms != 'undefined' ? gform_gravityforms.vars.images_url : ""; $(document).bind('gform_post_render', function(e, formID){ $("form#gform_" + formID + " .gform_fileupload_multifile").each(function(){ setup(this); }); var $form = $("form#gform_" + formID); if($form.length > 0){ $form.submit(function(){ var pendingUploads = false; $.each(gfMultiFileUploader.uploaders, function(i, uploader){ if(uploader.total.queued>0){ pendingUploads = true; return false; } }); if(pendingUploads){ alert(strings.currently_uploading); window["gf_submitting_" + formID] = false; $('#gform_ajax_spinner_' + formID).remove(); return false; } }); } }); $(document).bind("gform_post_conditional_logic", function(e,formID, fields, isInit){ if(!isInit){ $.each(gfMultiFileUploader.uploaders, function(i, uploader){ uploader.refresh(); }); } }); $(document).ready(function () { if((typeof adminpage !== 'undefined' && adminpage === 'toplevel_page_gf_edit_forms')|| typeof plupload == 'undefined'){ $(".gform_button_select_files").prop("disabled", true); } else if (typeof adminpage !== 'undefined' && adminpage.indexOf('_page_gf_entries') > -1) { $(".gform_fileupload_multifile").each(function(){ setup(this); }); } }); gfMultiFileUploader.setup = function (uploadElement){ setup( uploadElement ); }; function setup(uploadElement){ var settings = $(uploadElement).data('settings'); var uploader = new plupload.Uploader(settings); formID = uploader.settings.multipart_params.form_id; gfMultiFileUploader.uploaders[settings.container] = uploader; var formID; var uniqueID; uploader.bind('Init', function(up, params) { if(!up.features.dragdrop) $(".gform_drop_instructions").hide(); var fieldID = up.settings.multipart_params.field_id; var maxFiles = parseInt(up.settings.gf_vars.max_files); var initFileCount = countFiles(fieldID); if(maxFiles > 0 && initFileCount >= maxFiles){ gfMultiFileUploader.toggleDisabled(up.settings, true); } }); gfMultiFileUploader.toggleDisabled = function (settings, disabled){ var button = typeof settings.browse_button == "string" ? $("#" + settings.browse_button) : $(settings.browse_button); button.prop("disabled", disabled); }; function addMessage(messagesID, message){ $("#" + messagesID).prepend("
  • " + htmlEncode(message) + "
  • "); } uploader.init(); uploader.bind('BeforeUpload', function(up, file){ up.settings.multipart_params.original_filename = file.name; }); uploader.bind('FilesAdded', function(up, files) { var max = parseInt(up.settings.gf_vars.max_files), fieldID = up.settings.multipart_params.field_id, totalCount = countFiles(fieldID), disallowed = up.settings.gf_vars.disallowed_extensions, extension; if( max > 0 && totalCount >= max){ $.each(files, function(i, file) { up.removeFile(file); return; }); return; } $.each(files, function(i, file) { extension = file.name.split('.').pop(); if($.inArray(extension, disallowed) > -1){ addMessage(up.settings.gf_vars.message_id, file.name + " - " + strings.illegal_extension); up.removeFile(file); return; } if ((file.status == plupload.FAILED) || (max > 0 && totalCount >= max)){ up.removeFile(file); return; } var size = typeof file.size !== 'undefined' ? plupload.formatSize(file.size) : strings.in_progress; var status = '
    ' + htmlEncode(file.name) + ' (' + size + ') ' + '' + strings.cancel + '' + '
    '; $('#' + up.settings.filelist).prepend(status); totalCount++; }); up.refresh(); // Reposition Flash var formElementID = "form#gform_" + formID; var uidElementID = "input:hidden[name='gform_unique_id']"; var uidSelector = formElementID + " " + uidElementID; var $uid = $(uidSelector); if($uid.length==0){ $uid = $(uidElementID); } uniqueID = $uid.val(); if('' === uniqueID){ uniqueID = generateUniqueID(); $uid.val(uniqueID); } if(max > 0 && totalCount >= max){ gfMultiFileUploader.toggleDisabled(up.settings, true); addMessage(up.settings.gf_vars.message_id, strings.max_reached) } up.settings.multipart_params.gform_unique_id = uniqueID; up.start(); }); uploader.bind('UploadProgress', function(up, file) { var html = file.percent + "%"; $('#' + file.id + " b").html(html); }); uploader.bind('Error', function(up, err) { if(err.code === plupload.FILE_EXTENSION_ERROR){ var extensions = typeof up.settings.filters.mime_types != 'undefined' ? up.settings.filters.mime_types[0].extensions /* plupoad 2 */ : up.settings.filters[0].extensions; addMessage(up.settings.gf_vars.message_id, err.file.name + " - " + strings.invalid_file_extension + " " + extensions); } else if (err.code === plupload.FILE_SIZE_ERROR) { addMessage(up.settings.gf_vars.message_id, err.file.name + " - " + strings.file_exceeds_limit); } else { var m = "Error: " + err.code + ", Message: " + err.message + (err.file ? ", File: " + err.file.name : ""); addMessage(up.settings.gf_vars.message_id, m); } $('#' + err.file.id ).html(''); up.refresh(); // Reposition Flash }); uploader.bind('ChunkUploaded', function(up, file, result) { var response = $.secureEvalJSON(result.response); if(response.status == "error"){ up.removeFile(file); addMessage(up.settings.gf_vars.message_id, file.name + " - " + response.error.message); $('#' + file.id ).html(''); } }); uploader.bind('FileUploaded', function(up, file, result) { if( ! up.getFile(file.id) ) { // The file has been removed from the queue. return; } var response = $.secureEvalJSON(result.response); if(response.status == "error"){ addMessage(up.settings.gf_vars.message_id, file.name + " - " + response.error.message); $('#' + file.id ).html(''); return; } var html = '' + htmlEncode(file.name) + ''; var formId = up.settings.multipart_params.form_id; var fieldId = up.settings.multipart_params.field_id; html = " " + html; html = gform.applyFilters( 'gform_file_upload_markup', html, file, up, strings, imagesUrl ); $( '#' + file.id ).html( html ); if(file.percent == 100){ if(response.status && response.status == 'ok'){ addFile(fieldId, response.data); } else { addMessage(up.settings.gf_vars.message_id, strings.unknown_error + ': ' + file.name); } } }); function getAllFiles(){ var selector = '#gform_uploaded_files_' + formID, $uploadedFiles = $(selector), files; files = $uploadedFiles.val(); files = (typeof files === "undefined") || files === '' ? {} : $.parseJSON(files); return files; } function getFiles(fieldID){ var allFiles = getAllFiles(); var inputName = getInputName(fieldID); if(typeof allFiles[inputName] == 'undefined') allFiles[inputName] = []; return allFiles[inputName]; } function countFiles(fieldID){ var files = getFiles(fieldID); return files.length; } function addFile(fieldID, fileInfo){ var files = getFiles(fieldID); files.unshift(fileInfo); setUploadedFiles(fieldID, files); } function setUploadedFiles(fieldID, files){ var allFiles = getAllFiles(); var $uploadedFiles = $('#gform_uploaded_files_' + formID); var inputName = getInputName(fieldID); allFiles[inputName] = files; $uploadedFiles.val($.toJSON(allFiles)); } function getInputName(fieldID){ return "input_" + fieldID; } // fixes drag and drop in IE10 $("#" + settings.drop_element).on({ "dragenter": ignoreDrag, "dragover": ignoreDrag }); function ignoreDrag( e ) { e.preventDefault(); } } function generateUniqueID() { return 'xxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : r & 0x3 | 0x8; return v.toString(16); }); } function htmlEncode(value){ return $('
    ').text(value).html(); } }(window.gfMultiFileUploader = window.gfMultiFileUploader || {}, jQuery)); //---------------------------------------- //------ GENERAL FUNCTIONS ------- //---------------------------------------- function gformInitSpinner(formId, spinnerUrl) { jQuery('#gform_' + formId).submit(function () { gformAddSpinner(formId, spinnerUrl); }); } function gformAddSpinner(formId, spinnerUrl) { if (typeof spinnerUrl == 'undefined' || !spinnerUrl) { spinnerUrl = gform.applyFilters('gform_spinner_url', gf_global.spinnerUrl, formId); } if (jQuery('#gform_ajax_spinner_' + formId).length == 0) { /** * Filter the element after which the AJAX spinner will be inserted. * * @since 2.0 * * @param object $targetElem jQuery object containing all of the elements after which the AJAX spinner will be inserted. * @param int formId ID of the current form. */ var $spinnerTarget = gform.applyFilters('gform_spinner_target_elem', jQuery('#gform_submit_button_' + formId + ', #gform_wrapper_' + formId + ' .gform_next_button, #gform_send_resume_link_button_' + formId), formId); $spinnerTarget.after(''); } } //---------------------------------------- //------ EVENT FUNCTIONS ----------------- //---------------------------------------- var __gf_keyup_timeout; jQuery( document ).on( 'change keyup', '.gfield_trigger_change input, .gfield_trigger_change select, .gfield_trigger_change textarea', function( event ) { gf_raw_input_change( event, this ); } ); function gf_raw_input_change( event, elem ) { // clear regardless of event type for maximum efficiency ;) clearTimeout( __gf_keyup_timeout ); var $input = jQuery( elem ), htmlId = $input.attr( 'id' ), fieldId = gf_get_input_id_by_html_id( htmlId ), formId = gf_get_form_id_by_html_id( htmlId ); if( ! fieldId ) { return; } var isChangeElem = $input.is( ':checkbox' ) || $input.is( ':radio' ) || $input.is( 'select' ), isKeyupElem = ! isChangeElem || $input.is( 'textarea' ); if( event.type == 'keyup' && ! isKeyupElem ) { return; } else if( event.type == 'change' && ! isChangeElem && ! isKeyupElem ) { return; } if( event.type == 'keyup' ) { __gf_keyup_timeout = setTimeout( function() { gf_input_change( this, formId, fieldId ); }, 300 ); } else { gf_input_change( this, formId, fieldId ); } } function gf_get_input_id_by_html_id( htmlId ) { var ids = gf_get_ids_by_html_id( htmlId ), id = ids[2]; if( ids[3] ) { id += '.' + ids[3]; } return id; } function gf_get_form_id_by_html_id( htmlId ) { var ids = gf_get_ids_by_html_id( htmlId ), id = ids[1]; return id; } function gf_get_ids_by_html_id( htmlId ) { var ids = htmlId ? htmlId.split( '_' ) : false; return ids; } function gf_input_change( elem, formId, fieldId ) { gform.doAction( 'gform_input_change', elem, formId, fieldId ); } function gformExtractFieldId( inputId ) { var fieldId = parseInt( inputId.toString().split( '.' )[0] ); return ! fieldId ? inputId : fieldId; } function gformExtractInputIndex( inputId ) { var inputIndex = parseInt( inputId.toString().split( '.' )[1] ); return ! inputIndex ? false : inputIndex; } jQuery( document ).on( 'submit.gravityforms', '.gform_wrapper form', function( event ) { var formWrapper = jQuery( this ).closest( '.gform_wrapper' ), formID = formWrapper.attr( 'id' ).split( '_' )[ 2 ], hasPages = formWrapper.find( '.gform_page' ).length > 0, sourcePage = formWrapper.find( 'input[name^="gform_source_page_number_"]' ).val(), targetPage = formWrapper.find( 'input[name^="gform_target_page_number_"]' ).val(), isSubmit = targetPage === '0', isNextSubmit = ! isSubmit && ( targetPage > sourcePage ), isSave = jQuery( '#gform_save_' + formID ).val() === '1', submitButton; // Get the next or submit button. if ( hasPages ) { // Get the visible page. var visiblePage = formWrapper.find( '.gform_page:visible' ), buttonType = isNextSubmit ? 'next' : 'submit'; submitButton = visiblePage.find( '.gform_page_footer [id^="gform_' + buttonType + '_button_"]' ); } else { submitButton = formWrapper.find( '#gform_submit_button_' + formID ); } var isButtonHidden = ! submitButton.is(':visible'), abortSubmission = ! isSave && ( isSubmit || isNextSubmit ) && isButtonHidden; // If we are not saving or returning to an earlier page and the next/submit button is hidden abort the submission. if ( abortSubmission ) { window[ 'gf_submitting_' + formID ] = false; formWrapper.find( '.gform_ajax_spinner' ).remove(); event.preventDefault(); } } ); //---------------------------------------- //------ HELPER FUNCTIONS ---------------- //---------------------------------------- if( ! window['rgars'] ) { function rgars( array, prop ) { var props = prop.split( '/' ), value = array; for( var i = 0; i < props.length; i++ ) { value = rgar( value, props[ i ] ); } return value; } } if( ! window['rgar'] ) { function rgar( array, prop ) { if ( typeof array[ prop ] != 'undefined' ) { return array[ prop ]; } return ''; } } String.prototype.format = function () { var args = arguments; return this.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); }; // source --> http://mietauto-robert.ch/wp-content/plugins/gravityforms/js/conditional_logic.js?ver=2.3.4.3 var __gf_timeout_handle; gform.addAction( 'gform_input_change', function( elem, formId, fieldId ) { if( window.gf_form_conditional_logic ) { var dependentFieldIds = rgars( gf_form_conditional_logic, [ formId, 'fields', gformExtractFieldId( fieldId ) ].join( '/' ) ); if( dependentFieldIds ) { gf_apply_rules( formId, dependentFieldIds ); } } }, 10 ); function gf_apply_rules(formId, fields, isInit){ var rule_applied = 0; jQuery(document).trigger( 'gform_pre_conditional_logic', [ formId, fields, isInit ] ); for(var i=0; i < fields.length; i++){ gf_apply_field_rule(formId, fields[i], isInit, function(){ rule_applied++; if(rule_applied == fields.length){ jQuery(document).trigger('gform_post_conditional_logic', [formId, fields, isInit]); if(window["gformCalculateTotalPrice"]) window["gformCalculateTotalPrice"](formId); } }); } } function gf_check_field_rule(formId, fieldId, isInit, callback){ //if conditional logic is not specified for that field, it is supposed to be displayed if(!window["gf_form_conditional_logic"] || !window["gf_form_conditional_logic"][formId] || !window["gf_form_conditional_logic"][formId]["logic"][fieldId]) return "show"; var conditionalLogic = window["gf_form_conditional_logic"][formId]["logic"][fieldId]; var action = gf_get_field_action(formId, conditionalLogic["section"]); //If section is hidden, always hide field. If section is displayed, see if field is supposed to be displayed or hidden if(action != "hide") action = gf_get_field_action(formId, conditionalLogic["field"]); return action; } function gf_apply_field_rule(formId, fieldId, isInit, callback){ var action = gf_check_field_rule(formId, fieldId, isInit, callback); gf_do_field_action(formId, action, fieldId, isInit, callback); var conditionalLogic = window["gf_form_conditional_logic"][formId]["logic"][fieldId]; //perform conditional logic for the next button if(conditionalLogic["nextButton"]){ action = gf_get_field_action(formId, conditionalLogic["nextButton"]); gf_do_next_button_action(formId, action, fieldId, isInit); } } function gf_get_field_action(formId, conditionalLogic){ if(!conditionalLogic) return "show"; var matches = 0; for(var i = 0; i < conditionalLogic["rules"].length; i++){ var rule = conditionalLogic["rules"][i]; if(gf_is_match(formId, rule)) matches++; } var action; if( (conditionalLogic["logicType"] == "all" && matches == conditionalLogic["rules"].length) || (conditionalLogic["logicType"] == "any" && matches > 0) ) action = conditionalLogic["actionType"]; else action = conditionalLogic["actionType"] == "show" ? "hide" : "show"; return action; } function gf_is_match( formId, rule ) { var $ = jQuery, inputId = rule['fieldId'], fieldId = gformExtractFieldId( inputId ), inputIndex = gformExtractInputIndex( inputId ), isInputSpecific = inputIndex !== false, $inputs; if( isInputSpecific ) { $inputs = $( '#input_{0}_{1}_{2}'.format( formId, fieldId, inputIndex ) ); } else { $inputs = $( 'input[id="input_{0}_{1}"], input[id^="input_{0}_{1}_"], input[id^="choice_{0}_{1}_"], select#input_{0}_{1}, textarea#input_{0}_{1}'.format( formId, rule.fieldId ) ); } var isCheckable = $.inArray( $inputs.attr( 'type' ), [ 'checkbox', 'radio' ] ) !== -1, isMatch = isCheckable ? gf_is_match_checkable( $inputs, rule, formId, fieldId ) : gf_is_match_default( $inputs.eq( 0 ), rule, formId, fieldId ); return gform.applyFilters( 'gform_is_value_match', isMatch, formId, rule ); } function gf_is_match_checkable( $inputs, rule, formId, fieldId ) { var isMatch = false; $inputs.each( function() { var $input = jQuery( this ), fieldValue = gf_get_value( $input.val() ), isRangeOperator = jQuery.inArray( rule.operator, [ '<', '>' ] ) !== -1, isStringOperator = jQuery.inArray( rule.operator, [ 'contains', 'starts_with', 'ends_with' ] ) !== -1; // if we are looking for a specific value and this is not it, skip if( fieldValue != rule.value && ! isRangeOperator && ! isStringOperator ) { return; // continue } // force an empty value for unchecked items if( ! $input.is( ':checked' ) ) { fieldValue = ''; } // if the 'other' choice is selected, get the value from the 'other' text input else if ( fieldValue == 'gf_other_choice' ) { fieldValue = $( '#input_{0}_{1}_other'.format( formId, fieldId ) ).val(); } if( gf_matches_operation( fieldValue, rule.value, rule.operator ) ) { isMatch = true; return false; // break } } ); return isMatch; } function gf_is_match_default( $input, rule, formId, fieldId ) { var val = $input.val(), values = ( val instanceof Array ) ? val : [ val ], // transform regular value into array to support multi-select (which returns an array of selected items) matchCount = 0; for( var i = 0; i < values.length; i++ ) { // fields with pipes in the value will use the label for conditional logic comparison var hasLabel = values[i] ? values[i].indexOf( '|' ) >= 0 : true, fieldValue = gf_get_value( values[i] ); var fieldNumberFormat = gf_get_field_number_format( rule.fieldId, formId, 'value' ); if( fieldNumberFormat && ! hasLabel ) { fieldValue = gf_format_number( fieldValue, fieldNumberFormat ); } var ruleValue = rule.value; //if ( fieldNumberFormat ) { // ruleValue = gf_format_number( ruleValue, fieldNumberFormat ); //} if( gf_matches_operation( fieldValue, ruleValue, rule.operator ) ) { matchCount++; } } // if operator is 'isnot', none of the values can match var isMatch = rule.operator == 'isnot' ? matchCount == values.length : matchCount > 0; return isMatch; } function gf_format_number( value, fieldNumberFormat ) { decimalSeparator = '.'; if( fieldNumberFormat == 'currency' ) { decimalSeparator = gformGetDecimalSeparator( 'currency' ); } else if( fieldNumberFormat == 'decimal_comma' ) { decimalSeparator = ','; } else if( fieldNumberFormat == 'decimal_dot' ) { decimalSeparator = '.'; } // transform to a decimal dot number value = gformCleanNumber( value, '', '', decimalSeparator ); /** * Looking at format specified by wp locale creates issues. When performing conditional logic, all numbers will be formatted to decimal dot and then compared that way. AC */ // now transform to number specified by locale // if( window['gf_number_format'] && window['gf_number_format'] == 'decimal_comma' ) { // value = gformFormatNumber( value, -1, ',', '.' ); // } if( ! value ) { value = 0; } number = value.toString(); return number; } function gf_try_convert_float(text){ /* * The only format that should matter is the field format. Attempting to do this by WP locale creates a lot of issues with consistency. * var format = window["gf_number_format"] == "decimal_comma" ? "decimal_comma" : "decimal_dot"; */ var format = 'decimal_dot'; if( gformIsNumeric( text, format ) ) { var decimal_separator = format == "decimal_comma" ? "," : "."; return gformCleanNumber( text, "", "", decimal_separator ); } return text; } function gf_matches_operation(val1, val2, operation){ val1 = val1 ? val1.toLowerCase() : ""; val2 = val2 ? val2.toLowerCase() : ""; switch(operation){ case "is" : return val1 == val2; break; case "isnot" : return val1 != val2; break; case ">" : val1 = gf_try_convert_float(val1); val2 = gf_try_convert_float(val2); return gformIsNumber(val1) && gformIsNumber(val2) ? val1 > val2 : false; break; case "<" : val1 = gf_try_convert_float(val1); val2 = gf_try_convert_float(val2); return gformIsNumber(val1) && gformIsNumber(val2) ? val1 < val2 : false; break; case "contains" : return val1.indexOf(val2) >=0; break; case "starts_with" : return val1.indexOf(val2) ==0; break; case "ends_with" : var start = val1.length - val2.length; if(start < 0) return false; var tail = val1.substring(start); return val2 == tail; break; } return false; } function gf_get_value(val){ if(!val) return ""; val = val.split("|"); return val[0]; } function gf_do_field_action(formId, action, fieldId, isInit, callback){ var conditional_logic = window["gf_form_conditional_logic"][formId]; var dependent_fields = conditional_logic["dependents"][fieldId]; for(var i=0; i < dependent_fields.length; i++){ var targetId = fieldId == 0 ? "#gform_submit_button_" + formId : "#field_" + formId + "_" + dependent_fields[i]; var defaultValues = conditional_logic["defaults"][dependent_fields[i]]; //calling callback function on the last dependent field, to make sure it is only called once do_callback = (i+1) == dependent_fields.length ? callback : null; gf_do_action(action, targetId, conditional_logic["animation"], defaultValues, isInit, do_callback, formId); gform.doAction('gform_post_conditional_logic_field_action', formId, action, targetId, defaultValues, isInit); } } function gf_do_next_button_action(formId, action, fieldId, isInit){ var conditional_logic = window["gf_form_conditional_logic"][formId]; var targetId = "#gform_next_button_" + formId + "_" + fieldId; gf_do_action(action, targetId, conditional_logic["animation"], null, isInit, null, formId); } function gf_do_action(action, targetId, useAnimation, defaultValues, isInit, callback, formId){ var $target = jQuery( targetId ); /** * Do not re-enable inputs that are disabled by default. Check if field's inputs have been assessed. If not, add * designator class so these inputs are exempted below. */ if( ! $target.data( 'gf-disabled-assessed' ) ) { $target.find( ':input:hidden:disabled' ).addClass( 'gf-default-disabled' ); $target.data( 'gf-disabled-assessed', true ); } if(action == "show"){ // reset tabindex for selects $target.find( 'select' ).each( function() { $select = jQuery( this ); $select.attr( 'tabindex', $select.data( 'tabindex' ) ); } ); if(useAnimation && !isInit){ if($target.length > 0){ $target.find(':input:hidden:not(.gf-default-disabled)').prop( 'disabled', false ); $target.slideDown(callback); } else if(callback){ callback(); } } else{ var display = $target.data('gf_display'); //defaults to list-item if previous (saved) display isn't set for any reason if ( display == '' || display == 'none' ){ display = 'list-item'; } $target.find(':input:hidden:not(.gf-default-disabled)').prop( 'disabled', false ); $target.css('display', display); if(callback){ callback(); } } } else{ //if field is not already hidden, reset its values to the default var child = $target.children().first(); if (child.length > 0){ var reset = gform.applyFilters('gform_reset_pre_conditional_logic_field_action', true, formId, targetId, defaultValues, isInit); if(reset && !gformIsHidden(child)){ gf_reset_to_default(targetId, defaultValues); } } // remove tabindex and stash as a data attr for selects $target.find( 'select' ).each( function() { $select = jQuery( this ); $select.data( 'tabindex', $select.attr( 'tabindex' ) ).removeAttr( 'tabindex' ); } ); //Saving existing display so that it can be reset when showing the field if( ! $target.data('gf_display') ){ $target.data('gf_display', $target.css('display')); } if(useAnimation && !isInit){ if($target.length > 0 && $target.is(":visible")) { $target.slideUp(callback); } else if(callback) { callback(); } } else{ $target.hide(); $target.find(':input:hidden:not(.gf-default-disabled)').prop( 'disabled', true ); if(callback){ callback(); } } } } function gf_reset_to_default(targetId, defaultValue){ var dateFields = jQuery( targetId ).find( '.gfield_date_month input, .gfield_date_day input, .gfield_date_year input, .gfield_date_dropdown_month select, .gfield_date_dropdown_day select, .gfield_date_dropdown_year select' ); if( dateFields.length > 0 ) { dateFields.each( function(){ var element = jQuery( this ); // defaultValue is associative array (i.e. [ m: 1, d: 13, y: 1987 ] ) if( defaultValue ) { var key = 'd'; if (element.parents().hasClass('gfield_date_month') || element.parents().hasClass('gfield_date_dropdown_month') ){ key = 'm'; } else if(element.parents().hasClass('gfield_date_year') || element.parents().hasClass('gfield_date_dropdown_year') ){ key = 'y'; } val = defaultValue[ key ]; } else{ val = ""; } if(element.prop("tagName") == "SELECT" && val != '' ) val = parseInt(val); if(element.val() != val) element.val(val).trigger("change"); else element.val(val); }); return; } //cascading down conditional logic to children to suppport nested conditions //text fields and drop downs, filter out list field text fields name with "_shim" var target = jQuery(targetId).find('select, input[type="text"]:not([id*="_shim"]), input[type="number"], textarea'); var target_index = 0; target.each(function(){ var val = ""; var element = jQuery(this); //get name of previous input field to see if it is the radio button which goes with the "Other" text box //otherwise field is populated with input field name var radio_button_name = element.prev("input").attr("value"); if(radio_button_name == "gf_other_choice"){ val = element.attr("value"); } else if(jQuery.isArray(defaultValue)){ val = defaultValue[target_index]; } else if(jQuery.isPlainObject(defaultValue)){ val = defaultValue[element.attr("name")]; if( ! val ) { // 'input_123_3_1' => '3.1' var inputId = element.attr( 'id' ).split( '_' ).slice( 2 ).join( '.' ); val = defaultValue[ inputId ]; } } else if(defaultValue){ val = defaultValue; } if( element.is('select:not([multiple])') && ! val ) { val = element.find( 'option' ).not( ':disabled' ).eq(0).val(); } if(element.val() != val) { element.val(val).trigger('change'); if (element.is('select') && element.next().hasClass('chosen-container')) { element.trigger('chosen:updated'); } } else{ element.val(val); } target_index++; }); //checkboxes and radio buttons var elements = jQuery(targetId).find('input[type="radio"], input[type="checkbox"]:not(".copy_values_activated")'); elements.each(function(){ //is input currently checked? var isChecked = jQuery(this).is(':checked') ? true : false; //does input need to be marked as checked or unchecked? var doCheck = defaultValue ? jQuery.inArray(jQuery(this).attr('id'), defaultValue) > -1 : false; //if value changed, trigger click event if(isChecked != doCheck){ //setting input as checked or unchecked appropriately if(jQuery(this).attr("type") == "checkbox"){ jQuery(this).trigger('click'); } else{ jQuery(this).prop("checked", doCheck); //need to set the prop again after the click is triggered jQuery(this).trigger('click').prop('checked', doCheck); } } }); }; // source --> http://mietauto-robert.ch/wp-content/plugins/gravityforms/js/chosen.jquery.min.js?ver=2.3.4.3 /* Chosen v1.8.5 | (c) 2011-2018 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */ (function(){var t,e,s,i,n=function(t,e){return function(){return t.apply(e,arguments)}},o=function(t,e){function s(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},r={}.hasOwnProperty;(i=function(){function t(){this.options_index=0,this.parsed=[]}return t.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},t.prototype.add_group=function(t){var e,s,i,n,o,r;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),r=[],s=0,i=(o=t.childNodes).length;s"+t.group_label+""+t.html:t.html},t.prototype.mouse_enter=function(){return this.mouse_on_container=!0},t.prototype.mouse_leave=function(){return this.mouse_on_container=!1},t.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout(function(t){return function(){return t.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},t.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(t){return function(){return t.blur_test()}}(this),100)},t.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},t.prototype.results_option_build=function(t){var e,s,i,n,o,r,h;for(e="",h=0,n=0,o=(r=this.results_data).length;n=this.max_shown_results));n++);return e},t.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),t.style&&(s.style.cssText=t.style),s.setAttribute("data-option-array-index",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&t.active_options>0?((e=[]).push("group-result"),t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},t.prototype.reset_single_select_options=function(){var t,e,s,i,n;for(n=[],t=0,e=(s=this.results_data).length;t"+this.escape_html(s)+""+this.escape_html(f)),null!=a&&(a.group_match=!0)):null!=o.group_array_index&&this.results_data[o.group_array_index].search_match&&(o.search_match=!0)));return this.result_clear_highlight(),_<1&&h.length?(this.update_results_content(""),this.no_results(h)):(this.update_results_content(this.results_option_build()),(null!=t?t.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},t.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),e=this.case_sensitive_search?"":"i",new RegExp(s,e)},t.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},t.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,t=0,e=(s=this.form_field.options).length;t0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},t.prototype.clipboard_event_checker=function(t){if(!this.is_disabled)return setTimeout(function(t){return function(){return t.results_search()}}(this),50)},t.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},t.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},t.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},t.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},t.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},t.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},t.prototype.get_single_html=function(){return'\n \n '+this.default_text+'\n
    \n
    \n
    \n \n
      \n
      '},t.prototype.get_multi_html=function(){return'
        \n
      • \n \n
      • \n
      \n
      \n
        \n
        '},t.prototype.get_no_results_html=function(t){return'
      • \n '+this.results_none_found+" "+this.escape_html(t)+"\n
      • "},t.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},t.default_multiple_text="Select Some Options",t.default_single_text="Select an Option",t.default_no_result_text="No results match",t}(),(t=jQuery).fn.extend({chosen:function(i){return e.browser_is_supported()?this.each(function(e){var n,o;o=(n=t(this)).data("chosen"),"destroy"!==i?o instanceof s||n.data("chosen",new s(this,i)):o instanceof s&&o.destroy()}):this}}),s=function(s){function n(){return n.__super__.constructor.apply(this,arguments)}return o(n,e),n.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},n.prototype.set_up_html=function(){var e,s;return(e=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl"),s={"class":e.join(" "),title:this.form_field.title},this.form_field.id.length&&(s.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=t("
        ",s),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input.chosen-search-input"),this.focus_field=this.container.find("input.chosen-focus-input"),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},n.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},n.prototype.register_observers=function(){var t;return this.container.on("touchstart.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("touchend.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mousedown.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("mouseup.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mouseenter.chosen",function(t){return function(e){t.mouse_enter(e)}}(this)),this.container.on("mouseleave.chosen",function(t){return function(e){t.mouse_leave(e)}}(this)),this.search_results.on("mouseup.chosen",function(t){return function(e){t.search_results_mouseup(e)}}(this)),this.search_results.on("mouseover.chosen",function(t){return function(e){t.search_results_mouseover(e)}}(this)),this.search_results.on("mouseout.chosen",function(t){return function(e){t.search_results_mouseout(e)}}(this)),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",function(t){return function(e){t.search_results_mousewheel(e)}}(this)),this.search_results.on("touchstart.chosen",function(t){return function(e){t.search_results_touchstart(e)}}(this)),this.search_results.on("touchmove.chosen",function(t){return function(e){t.search_results_touchmove(e)}}(this)),this.search_results.on("touchend.chosen",function(t){return function(e){t.search_results_touchend(e)}}(this)),this.form_field_jq.on("chosen:updated.chosen",function(t){return function(e){t.results_update_field(e)}}(this)),this.form_field_jq.on("chosen:activate.chosen",function(t){return function(e){t.activate_field(e)}}(this)),this.form_field_jq.on("chosen:open.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.form_field_jq.on("chosen:close.chosen",function(t){return function(e){t.close_field(e)}}(this)),this.search_field.on("blur.chosen",function(t){return function(e){t.input_blur(e)}}(this)),this.search_field.on("keyup.chosen",function(t){return function(e){t.keyup_checker(e)}}(this)),this.search_field.on("keydown.chosen",function(t){return function(e){t.keydown_checker(e)}}(this)),this.search_field.on("focus.chosen",function(t){return function(e){t.input_focus(e)}}(this)),this.search_field.on("cut.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.search_field.on("paste.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.is_multiple?this.search_choices.on("click.chosen",function(t){return function(e){t.choices_click(e)}}(this)):(this.container.on("click.chosen",function(t){t.preventDefault()}),this.focus_field.on("blur.chosen",function(t){return function(e){t.input_blur(e)}}(this)),this.focus_field.on("focus.chosen",function(t){return function(e){t.input_focus(e)}}(this)),t=function(t){return function(){return t.search_field.val(t.focus_field.val()),t.focus_field.val("")}}(this),this.focus_field.on("keyup.chosen",function(e){return function(s){t(),e.keyup_checker(s)}}(this)),this.focus_field.on("keydown.chosen",function(e){return function(s){t(),e.keydown_checker(s)}}(this)),this.focus_field.on("cut.chosen",function(e){return function(s){setTimeout(t,0),e.clipboard_event_checker(s)}}(this)),this.focus_field.on("paste.chosen",function(e){return function(s){setTimeout(t,0),e.clipboard_event_checker(s)}}(this)))},n.prototype.destroy=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.form_field_label.length>0&&this.form_field_label.off("click.chosen"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},n.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents("fieldset").is(":disabled"),this.container.toggleClass("chosen-disabled",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off("focus.chosen",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on("focus.chosen",this.activate_field)},n.prototype.container_mousedown=function(e){var s;if(!this.is_disabled)return!e||"mousedown"!==(s=e.type)&&"touchstart"!==s||this.results_showing||e.preventDefault(),null!=e&&t(e.target).hasClass("search-choice-close")?void 0:(this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents("a.chosen-single").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),t(this.container[0].ownerDocument).on("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},n.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},n.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},n.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},n.prototype.close_field=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},n.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.focus()},n.prototype.test_active_click=function(e){var s;return(s=t(e.target).closest(".chosen-container")).length&&this.container[0]===s[0]?this.active_field=!0:this.close_field()},n.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=i.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.focus_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.focus_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},n.prototype.result_do_highlight=function(t){var e,s,i,n,o;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),i=parseInt(this.search_results.css("maxHeight"),10),o=this.search_results.scrollTop(),n=i+o,s=this.result_highlight.position().top+this.search_results.scrollTop(),(e=s+this.result_highlight.outerHeight())>=n)return this.search_results.scrollTop(e-i>0?e-i:0);if(s0)return this.form_field_label.on("click.chosen",this.label_click_handler)},n.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},n.prototype.search_results_mouseup=function(e){var s;if((s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first()).length)return this.result_highlight=s,this.result_select(e),this.search_field.focus()},n.prototype.search_results_mouseover=function(e){var s;if(s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first())return this.result_do_highlight(s)},n.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass("active-result")||t(e.target).parents(".active-result").first())return this.result_clear_highlight()},n.prototype.choice_build=function(e){var s,i;return s=t("
      • ",{"class":"search-choice"}).html(""+this.choice_label(e)+""),e.disabled?s.addClass("search-choice-disabled"):((i=t("",{"class":"search-choice-close","data-option-array-index":e.array_index})).on("click.chosen",function(t){return function(e){return t.choice_destroy_link_click(e)}}(this)),s.append(i)),this.search_container.before(s)},n.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},n.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},n.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},n.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},n.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),e.addClass("result-selected"),s=this.results_data[e[0].getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?t.metaKey||t.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.val(""),this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change({selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale())},n.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(t)},n.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},n.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after(''),this.selected_item.addClass("chosen-single-with-deselect")},n.prototype.get_search_field_value=function(){return this.search_field.val()},n.prototype.get_search_text=function(){return t.trim(this.get_search_field_value())},n.prototype.escape_html=function(e){return t("
        ").text(e).html()},n.prototype.winnow_results_set_highlight=function(){var t,e;if(e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),null!=(t=e.length?e.first():this.search_results.find(".active-result").first()))return this.result_do_highlight(t)},n.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},n.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},n.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},n.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},n.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last()).length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0},n.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},n.prototype.search_field_scale=function(){var e,s,i,n,o,r,h;if(this.is_multiple){for(o={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},s=0,i=(r=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;s").css(o)).text(this.get_search_field_value()),t("body").append(e),h=e.width()+25,e.remove(),this.container.is(":visible")&&(h=Math.min(this.container.outerWidth()-10,h)),this.search_field.width(h)}},n.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger("input",t),this.form_field_jq.trigger("change",t)},n}()}).call(this); // source --> http://mietauto-robert.ch/wp-content/plugins/gravityforms/js/placeholders.jquery.min.js?ver=2.3.4.3 /* Placeholders.js v3.0.2 */ (function(t){"use strict";function e(t,e,r){return t.addEventListener?t.addEventListener(e,r,!1):t.attachEvent?t.attachEvent("on"+e,r):void 0}function r(t,e){var r,n;for(r=0,n=t.length;n>r;r++)if(t[r]===e)return!0;return!1}function n(t,e){var r;t.createTextRange?(r=t.createTextRange(),r.move("character",e),r.select()):t.selectionStart&&(t.focus(),t.setSelectionRange(e,e))}function a(t,e){try{return t.type=e,!0}catch(r){return!1}}t.Placeholders={Utils:{addEventListener:e,inArray:r,moveCaret:n,changeType:a}}})(this),function(t){"use strict";function e(){}function r(){try{return document.activeElement}catch(t){}}function n(t,e){var r,n,a=!!e&&t.value!==e,u=t.value===t.getAttribute(V);return(a||u)&&"true"===t.getAttribute(P)?(t.removeAttribute(P),t.value=t.value.replace(t.getAttribute(V),""),t.className=t.className.replace(R,""),n=t.getAttribute(z),parseInt(n,10)>=0&&(t.setAttribute("maxLength",n),t.removeAttribute(z)),r=t.getAttribute(D),r&&(t.type=r),!0):!1}function a(t){var e,r,n=t.getAttribute(V);return""===t.value&&n?(t.setAttribute(P,"true"),t.value=n,t.className+=" "+I,r=t.getAttribute(z),r||(t.setAttribute(z,t.maxLength),t.removeAttribute("maxLength")),e=t.getAttribute(D),e?t.type="text":"password"===t.type&&K.changeType(t,"text")&&t.setAttribute(D,"password"),!0):!1}function u(t,e){var r,n,a,u,i,l,o;if(t&&t.getAttribute(V))e(t);else for(a=t?t.getElementsByTagName("input"):f,u=t?t.getElementsByTagName("textarea"):h,r=a?a.length:0,n=u?u.length:0,o=0,l=r+n;l>o;o++)i=r>o?a[o]:u[o-r],e(i)}function i(t){u(t,n)}function l(t){u(t,a)}function o(t){return function(){b&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(P)?K.moveCaret(t,0):n(t)}}function c(t){return function(){a(t)}}function s(t){return function(e){return A=t.value,"true"===t.getAttribute(P)&&A===t.getAttribute(V)&&K.inArray(C,e.keyCode)?(e.preventDefault&&e.preventDefault(),!1):void 0}}function d(t){return function(){n(t,A),""===t.value&&(t.blur(),K.moveCaret(t,0))}}function v(t){return function(){t===r()&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(P)&&K.moveCaret(t,0)}}function g(t){return function(){i(t)}}function p(t){t.form&&(T=t.form,"string"==typeof T&&(T=document.getElementById(T)),T.getAttribute(U)||(K.addEventListener(T,"submit",g(T)),T.setAttribute(U,"true"))),K.addEventListener(t,"focus",o(t)),K.addEventListener(t,"blur",c(t)),b&&(K.addEventListener(t,"keydown",s(t)),K.addEventListener(t,"keyup",d(t)),K.addEventListener(t,"click",v(t))),t.setAttribute(j,"true"),t.setAttribute(V,x),(b||t!==r())&&a(t)}var f,h,b,m,A,y,E,x,L,T,S,N,w,B=["text","search","url","tel","email","password","number","textarea"],C=[27,33,34,35,36,37,38,39,40,8,46],k="#ccc",I="placeholdersjs",R=RegExp("(?:^|\\s)"+I+"(?!\\S)"),V="data-placeholder-value",P="data-placeholder-active",D="data-placeholder-type",U="data-placeholder-submit",j="data-placeholder-bound",q="data-placeholder-focus",Q="data-placeholder-live",z="data-placeholder-maxlength",F=document.createElement("input"),G=document.getElementsByTagName("head")[0],H=document.documentElement,J=t.Placeholders,K=J.Utils;if(J.nativeSupport=void 0!==F.placeholder,!J.nativeSupport){for(f=document.getElementsByTagName("input"),h=document.getElementsByTagName("textarea"),b="false"===H.getAttribute(q),m="false"!==H.getAttribute(Q),y=document.createElement("style"),y.type="text/css",E=document.createTextNode("."+I+" { color:"+k+"; }"),y.styleSheet?y.styleSheet.cssText=E.nodeValue:y.appendChild(E),G.insertBefore(y,G.firstChild),w=0,N=f.length+h.length;N>w;w++)S=f.length>w?f[w]:h[w-f.length],x=S.attributes.placeholder,x&&(x=x.nodeValue,x&&K.inArray(B,S.type)&&p(S));L=setInterval(function(){for(w=0,N=f.length+h.length;N>w;w++)S=f.length>w?f[w]:h[w-f.length],x=S.attributes.placeholder,x?(x=x.nodeValue,x&&K.inArray(B,S.type)&&(S.getAttribute(j)||p(S),(x!==S.getAttribute(V)||"password"===S.type&&!S.getAttribute(D))&&("password"===S.type&&!S.getAttribute(D)&&K.changeType(S,"text")&&S.setAttribute(D,"password"),S.value===S.getAttribute(V)&&(S.value=x),S.setAttribute(V,x)))):S.getAttribute(P)&&(n(S),S.removeAttribute(V));m||clearInterval(L)},100)}K.addEventListener(t,"beforeunload",function(){J.disable()}),J.disable=J.nativeSupport?e:i,J.enable=J.nativeSupport?e:l}(this),function(t){"use strict";var e=t.fn.val,r=t.fn.prop;Placeholders.nativeSupport||(t.fn.val=function(t){var r=e.apply(this,arguments),n=this.eq(0).data("placeholder-value");return void 0===t&&this.eq(0).data("placeholder-active")&&r===n?"":r},t.fn.prop=function(t,e){return void 0===e&&this.eq(0).data("placeholder-active")&&"value"===t?"":r.apply(this,arguments)})}(jQuery);